import pandas as pd
from json import load
import plotly.express as px
# Pour affichage dynamique des graphiques Plotly sur GitHub
import plotly.offline as po
po.init_notebook_mode()
data171819 = pd.read_excel("../../data/collecte verre CACPL/Données Verre 2017-2018- 2019 janv à nov.xlsx", skiprows=[0,1], usecols="B:L")
data20 = pd.read_excel("../../data/collecte verre CACPL/Verre PAV 2020.xlsx", skiprows=[0,1,2], usecols="B:F")
data171819.drop_duplicates(inplace=True)
data20.drop_duplicates(subset=data20.columns[1:], inplace=True)
dictVilles = { "CAN": "Cannes", "CNT": "Le Cannet", "MAN": "Mandelieu-la-Napoule", "MOU": "Mougins", "THE": "Théoule-sur-Mer"}
# Standardisation des noms de ville (seule la majuscule est en capitale)
# Création du dictionnaire pour la conversion
dictVillesMajuscules = { "CANNES": "Cannes", "LE CANNET": "Le Cannet", "MANDELIEU-LA-NAPOULE": "Mandelieu-la-Napoule", "MOUGINS": "Mougins", "THÉOULE-SUR-MER": "Théoule-sur-Mer"}
# Transformation des valeurs de la colonne par association avec le dictionnaire
for i in data171819.index:
data171819.loc[i, "Ville"] = dictVillesMajuscules[data171819.loc[i, "Ville"]]
# Standardisation des noms des colonnes utilisées
data171819.rename(columns={"MOIS": "Mois", "Poids Kg": "Poids"}, inplace=True)
data171819
# Manipulation supplémentaire pour classifier les mois
# Définition de la liste chronologique des mois
listeMois = ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"]
# Mois devient une variable qualitative (ou catégorielle) qui suit l'ordre défini dans listeMois
data171819["Mois"] = pd.Categorical(data171819["Mois"], listeMois)
# Tri du jeu de données selon la colonne Mois
data171819.sort_values(["Ville", "Année", "Mois"], inplace=True)
data171819
for i in data20.index:
data20.loc[i, "Ville"] = dictVilles[data20.loc[i, "Lieu de Collecte"][5:8]]
data20.loc[i, "Lieu de Collecte"] = data20.loc[i, "Lieu de Collecte"][9:]
data20.Poids = (data20.Poids * 1000).astype(int)
data20
# Jeu de couleurs de la CACPL
dictVillesCouleurs = {"Cannes": "#7bc3b7", "Le Cannet": "#528238", "Mandelieu-la-Napoule": "#fab55a", "Mougins": "#e84e2c", "Théoule-sur-Mer": "#507999"}
data17 = data171819[data171819["Année"] == 2017]
# Utilsation du diagramme à barres
data17Count = data17.Ville.value_counts()
px.bar(data17Count, color=data17Count.index, y=data17Count.values, labels={"index": "Ville", "y": "Nombre"}, width=900, title="Nombre de collectes de verre par ville en 2017")
# Utilisation de l'histogramme
fig = px.histogram(data17, x="Ville", color="Ville", width=900, title="Nombre de collectes de verre par ville en 2017")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
# Réutilisation du jeu de couleurs de la CACPL
fig = px.histogram(data17, x="Ville", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collectes de verre par ville en 2017")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
px.pie(data17, names="Ville", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition du nombre de collectes de verre par ville en 2017")
data18 = data171819[data171819["Année"] == 2018]
fig = px.histogram(data18, x="Ville", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collectes de verre par ville en 2018")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
px.pie(data18, names="Ville", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition du nombre de collectes de verre par ville en 2018")
data19 = data171819[data171819["Année"] == 2019]
fig = px.histogram(data19, x="Ville", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collectes de verre par ville en 2019 (sans décembre)")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
px.pie(data19, names="Ville", color="Ville", color_discrete_map=dictVillesCouleurs, width=800, title="Répartition du nombre de collectes de verre par ville en 2019 (sans décembre)")
fig = px.histogram(data171819, x="Année", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collectes de verre par année et par ville sur la période 2017-2019")
fig.update_layout(barmode='group')
fig.update_layout(yaxis_title="Nombre")
fig = px.histogram(data171819, x="Année", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collectes de verre par année et par ville sur la période 2017-2019")
fig.update_layout(yaxis_title="Nombre")
fig.update_xaxes(type='category')
fig = px.histogram(data171819, x="Ville", color="Année", width=900, title="Nombre de collectes de verre par ville et par année sur la période 2017-2019")
fig.update_layout(barmode="group", yaxis_title="Nombre")
fig.update_xaxes(categoryorder="total descending")
px.histogram(data171819, x="Ville", color="Année", width= 900, title="Nombre de collectes de verre par ville et par année sur la période 2017-2019")
fig.update_layout(barmode="stack", yaxis_title="Nombre")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(data20, x="Ville", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collectes de verre par ville en 2020")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
px.pie(data20, names="Ville", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition du nombre de collectes de verre par ville en 2020")
# Création du dataframe regroupant les villes, années, mois et nombres de collectes de 2017 à 2020
# sort=False pour ne pas trier les clés par ordre alphabétique et ainsi conserver l'ordre des mois tels qu'ils apparaissent dans le jeu de données, soit l'ordre chronologique des mois de l'année
# observed=True pour ne montrer que les valeurs observées et ainsi ne pas prendre en compte des décomptes nuls (dus à l'incomplétudes des données fournies) et fausser les tracés de lignes
# (par exemple le nombre de collectes de verre par mois et par ville en 2019 avec des données manquantes pour novembre et décembre)
data171819Mois = data171819.groupby(by=["Ville", "Année", "Mois"], sort=False, observed=True).size().reset_index(name="Nombre")
# Ajout de la colonne pour l'année à data20 pour faire correspondre au format
data20["Année"] = 2020
# Ajout de la colonne pour le mois à partir de la date
data20["Mois"] = pd.to_datetime(data20["Date de réalisation"]).dt.month
# Conversion du nombre du mois en toutes lettres par correspondance avec la liste chronologique des mois
for i in data20.index:
data20.loc[i, "Mois"] = listeMois[data20.loc[i, "Mois"] - 1]
data20Mois = data20.groupby(by=["Ville", "Année", "Mois"], sort=False, observed=True).size().reset_index(name="Nombre")
# Concaténation des 2 dataframes
dataMoisAnnee = pd.concat([data171819Mois, data20Mois])
dataMoisAnnee
fig = px.histogram(dataMoisAnnee, x="Année", y="Nombre", color="Ville", width=1000, color_discrete_map=dictVillesCouleurs, title="Nombre de collectes de verre par année et par ville sur la période 2017-2020")
fig.update_layout(barmode='group', yaxis_title="Nombre")
fig = px.histogram(dataMoisAnnee, x="Année", y="Nombre", color="Ville", width=1000, color_discrete_map=dictVillesCouleurs, title="Nombre de collectes de verre par année et par ville sur la période 2017-2020")
fig.update_layout(yaxis_title="Nombre")
fig.update_xaxes(type="category")
fig = px.histogram(dataMoisAnnee, x="Ville", y="Nombre", color="Année", width=1000, title="Nombre de collectes de verre par ville et par année sur la période 2017-2020")
fig.update_layout(barmode="group", yaxis_title="Nombre")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(dataMoisAnnee, x="Ville", y="Nombre", color="Année", width=1000, title="Nombre de collectes de verre par ville et par année sur la période 2017-2020")
fig.update_layout(yaxis_title="Nombre")
fig.update_xaxes(categoryorder="total descending")
px.pie(dataMoisAnnee, names="Ville", values="Nombre", color="Ville", color_discrete_map=dictVillesCouleurs, width=800, title="Répartition du nombre de collectes de verre par ville sur la période 2017-2020")
Note : les différences entre les intitulés de la colonne Adresse de data171819 et ceux de la colonne Lieu de Collecte (et surtout leur absence de correspondance entre eux, leur nombre notamment étant différent) empêchent leur traitement commun
dataCannes171819 = data171819[data171819["Ville"] == "Cannes"]
# Histogramme classique
fig = px.histogram(dataCannes171819, x="Adresse", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
dataCannes171819Sorted = dataCannes171819.sort_values("Adresse")
# Histogramme avec les adresses par ordre alphabétique
fig = px.histogram(dataCannes171819Sorted, x="Adresse", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
# Histogramme par ordre décroissant sur le nombre de collectes (couleurs et légende selon l'affichage classique)
fig = px.histogram(dataCannes171819, x="Adresse", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10), categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
dataCannes171819Count = dataCannes171819.Adresse.value_counts()
# Histogramme par ordre décroissant sur le nombre de collectes et légende en correspondance
fig = px.bar(dataCannes171819Count, color=dataCannes171819Count.index, color_discrete_sequence=px.colors.qualitative.Pastel, y=dataCannes171819Count.values, labels={"index": "Adresse", "y": "Nombre"}, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes sur la période 2017-2019" )
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig = px.histogram(dataCannes171819, x="Adresse", histfunc="count", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
# Histogramme avec appel implicite du histfunc
fig = px.histogram(dataCannes171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
# Autre méthode (dépréciée)
dataCannes171819Annee = dataCannes171819.groupby(by=["Adresse", "Année"])["Collecte"].count().reset_index(name="nb collectes")
fig = px.histogram(dataCannes171819Annee, x="Adresse", y="nb collectes", histfunc="sum", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
fig = px.histogram(dataCannes171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Nombre")
dataCannes20 = data20[data20["Ville"] == "Cannes"]
fig = px.histogram(dataCannes20, x="Lieu de Collecte", histfunc="count", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
dataCannet171819 = data171819[data171819["Ville"] == "Le Cannet"]
fig = px.histogram(dataCannet171819, x="Adresse", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse au Cannet sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
fig = px.histogram(dataCannet171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse au Cannet et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
fig = px.histogram(dataCannet171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse au Cannet et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Nombre")
dataCannet20 = data20[data20["Ville"] == "Le Cannet"]
fig = px.histogram(dataCannet20, x="Lieu de Collecte", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse au Cannet en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
dataMandelieu171819 = data171819[data171819["Ville"] == "Mandelieu-la-Napoule"]
fig = px.histogram(dataMandelieu171819, x="Adresse", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Mandelieu-la-Napoule sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
fig = px.histogram(dataMandelieu171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Mandelieu-la-Napoule et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
fig = px.histogram(dataMandelieu171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Mandelieu-la-Napoule et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Nombre")
dataMandelieu20 = data20[data20["Ville"] == "Mandelieu-la-Napoule"]
fig = px.histogram(dataMandelieu20, x="Lieu de Collecte", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Mandelieu-la-Napoule en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
dataMougins171819 = data171819[data171819["Ville"] == "Mougins"]
fig = px.histogram(dataMougins171819, x="Adresse", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Mougins sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
fig = px.histogram(dataMougins171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Mougins et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
fig = px.histogram(dataMougins171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Mougins et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Nombre")
dataMougins20 = data20[data20["Ville"] == "Mougins"]
fig = px.histogram(dataMougins20, x="Lieu de Collecte", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Mougins en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
dataTheoule171819 = data171819[data171819["Ville"] == "Théoule-sur-Mer"]
fig = px.histogram(dataTheoule171819, x="Adresse", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Théoule-sur-Mer sur la période 2017-2019")
#fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
fig = px.histogram(dataTheoule171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Théoule-sur-Mer et par année sur la période 2017-2019")
#fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
fig = px.histogram(dataTheoule171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Théoule-sur-Mer et par année sur la période 2017-2019")
#fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Nombre")
dataTheoule20 = data20[data20["Ville"] == "Théoule-sur-Mer"]
fig = px.histogram(dataTheoule20, x="Lieu de Collecte", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Théoule-sur-Mer en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
data17Mois = data17.groupby(by=["Mois", "Ville"], sort=False).size().reset_index(name="Nombre")
px.line(data17Mois, x="Mois", y="Nombre", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collectes de verre par mois et par ville en 2017")
data17Mois = dataMoisAnnee[dataMoisAnnee["Année"] == 2017]
px.line(data17Mois, x="Mois", y="Nombre", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collectes de verre par mois et par ville en 2017")
data18Mois = dataMoisAnnee[dataMoisAnnee["Année"] == 2018]
px.line(data18Mois, x="Mois", y="Nombre", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collectes de verre par mois et par ville en 2018")
#data19Mois = dataMoisAnnee[(dataMoisAnnee["Année"] == 2019) & (dataMoisAnnee["Nombre"] != 0)] # si observed=False (valeur par défaut) dans le groupby pour la création du dataframe dataMoisAnnee
data19Mois = dataMoisAnnee[dataMoisAnnee["Année"] == 2019]
px.line(data19Mois, x="Mois", y="Nombre", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collectes de verre par mois et par ville en 2019")
data20Mois = dataMoisAnnee[dataMoisAnnee["Année"] == 2020]
px.line(data20Mois, x="Mois", y="Nombre", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collectes de verre par mois et par ville en 2020")
dataMoisAnnee["Période"] = dataMoisAnnee["Mois"] + " " + dataMoisAnnee["Année"].astype(str)
dataMoisAnnee
fig = px.line(dataMoisAnnee, x="Période", y="Nombre", color='Ville', color_discrete_map=dictVillesCouleurs, width=2000, title="Nombre de collectes de verre par mois et par ville sur la période 2017-2020")
fig.update_layout(yaxis_title="Poids (en kg)")
fig.update_xaxes(tickangle=270)
dataCannesMois = dataMoisAnnee[dataMoisAnnee["Ville"] == "Cannes"]
px.line(dataCannesMois, x="Mois", y="Nombre", color='Année', width=900, title="Nombre de collectes de verre à Cannes par mois et par année")
# Graphique avec échelle ajustée
fig = px.line(dataCannesMois, x="Mois", y="Nombre", color='Année', width=900, title="Nombre de collectes de verre à Cannes par mois et par année")
# Axe Y commençant à 0
fig.update_layout(yaxis_rangemode="tozero")
dataCannetMois = dataMoisAnnee[dataMoisAnnee["Ville"] == "Le Cannet"]
fig = px.line(dataCannetMois, x="Mois", y="Nombre", color='Année', width=900, title="Nombre de collectes de verre au Cannet par mois et par année")
fig.update_layout(yaxis_rangemode="tozero")
dataMandelieuMois = dataMoisAnnee[dataMoisAnnee["Ville"] == "Mandelieu-la-Napoule"]
fig = px.line(dataMandelieuMois, x="Mois", y="Nombre", color='Année', width=900, title="Nombre de collectes de verre à Mandelieu-la-Napoule par mois et par année")
fig.update_layout(yaxis_rangemode="tozero")
dataMouginsMois = dataMoisAnnee[dataMoisAnnee["Ville"] == "Mougins"]
fig = px.line(dataMouginsMois, x="Mois", y="Nombre", color='Année', width=900, title="Nombre de collectes de verre à Mougins par mois et par année")
fig.update_layout(yaxis_rangemode="tozero")
dataTheouleMois = dataMoisAnnee[dataMoisAnnee["Ville"] == "Théoule-sur-Mer"]
fig = px.line(dataTheouleMois, x="Mois", y="Nombre", color='Année', width=900, title="Nombre de collectes de verre à Théoule-sur-Mer par mois et par année")
fig.update_layout(yaxis_rangemode="tozero")
fig = px.histogram(data17, x="Ville", y="Poids", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Poids collecté de verre par ville en 2017")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Poids (en kg)")
px.pie(data17, names="Ville", values="Poids", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition du poids collecté de verre par ville en 2017")
fig = px.histogram(data18, x="Ville", y="Poids", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Poids collecté de verre par ville en 2018")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Poids (en kg)")
px.pie(data18, names="Ville", values="Poids", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition du poids collecté de verre par ville en 2018")
fig = px.histogram(data19, x="Ville", y="Poids", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Poids collecté de verre par ville en 2019")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Poids (en kg)")
px.pie(data19, names="Ville", values="Poids", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition du poids collecté de verre par ville en 2019")
fig = px.histogram(data20, x="Ville", y="Poids", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Poids collecté de verre par ville en 2020")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Poids (en kg)")
px.pie(data20, names="Ville", values="Poids", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition du poids collecté de verre par ville en 2020")
data171819MoisPoids = data171819.groupby(by=["Ville", "Année", "Mois"], sort=False, observed=True)["Poids"].sum().reset_index(name="Poids")
data20MoisPoids = data20.groupby(by=["Ville", "Année", "Mois"], sort=False, observed=True)["Poids"].sum().reset_index(name="Poids")
dataMoisAnneePoids = pd.concat([data171819MoisPoids, data20MoisPoids])
dataMoisAnneePoids
fig = px.histogram(dataMoisAnneePoids, x="Année", y="Poids", color="Ville", width=1000, color_discrete_map=dictVillesCouleurs, title="Poids collecté de verre par année et par ville sur la période 2017-2020")
fig.update_layout(barmode='group', yaxis_title="Poids (en kg)")
fig = px.histogram(dataMoisAnneePoids, x="Année", y="Poids", color="Ville", width=1000, color_discrete_map=dictVillesCouleurs, title="Poids collecté de verre par année et par ville sur la période 2017-2020")
fig.update_layout(yaxis_title="Poids (en kg)")
fig.update_xaxes(type="category")
fig = px.histogram(dataMoisAnneePoids, x="Ville", y="Poids", color="Année", width=1000, title="Poids collecté de verre par ville et par année sur la période 2017-2020")
fig.update_layout(barmode="group", yaxis_title="Poids (en kg)")
fig.update_xaxes(categoryorder="total descending")
fig = px.histogram(dataMoisAnneePoids, x="Ville", y="Poids", color="Année", width=1000, title="Poids collecté de verre par ville et par année sur la période 2017-2020")
fig.update_layout(yaxis_title="Poids (en kg)")
fig.update_xaxes(categoryorder="total descending")
px.pie(dataMoisAnneePoids, names="Ville", values="Poids", color="Ville", color_discrete_map=dictVillesCouleurs, width=800, title="Répartition du poids collecté de verre par ville sur la période 2017-2020")
fig = px.histogram(dataCannes171819, x="Adresse", y="Poids", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse à Cannes sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataCannes171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse à Cannes et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataCannes171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse à Cannes et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Poids (en kg)")
fig = px.box(dataCannes171819, x="Adresse", y="Poids", color="Adresse", width=2000, height=1000, title="Dispersion du poids collecté de verre par adresse à Cannes sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataCannes20, x="Lieu de Collecte", y="Poids", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse à Cannes en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataCannet171819, x="Adresse", y="Poids", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse au Cannet sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataCannet171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse au Cannet et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataCannet171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse au Cannet et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Poids (en kg)")
fig = px.box(dataCannet171819, x="Adresse", y="Poids", color="Adresse", width=2000, height=1000, title="Dispersion du poids collecté de verre par adresse au Cannet sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataCannet20, x="Lieu de Collecte", y="Poids", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse au Cannet en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataMandelieu171819, x="Adresse", y="Poids", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse à Mandelieu-la-Napoule sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataMandelieu171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse à Mandelieu-la-Napoule et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataMandelieu171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse à Mandelieu-la-Napoule et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Poids (en kg)")
fig = px.box(dataMandelieu171819, x="Adresse", y="Poids", color="Adresse", width=2000, height=1000, title="Dispersion du poids collecté de verre par adresse à Mandelieu-la-Napoule sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataMandelieu20, x="Lieu de Collecte", y="Poids", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse à Mandelieu-la-Napoule en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataMougins171819, x="Adresse", y="Poids", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse à Mougins sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataMougins171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse à Mougins et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataMougins171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse à Mougins et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Poids (en kg)")
fig = px.box(dataMougins171819, x="Adresse", y="Poids", color="Adresse", width=2000, height=1000, title="Dispersion du poids collecté de verre par adresse à Mougins sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataMougins20, x="Lieu de Collecte", y="Poids", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse à Mougins en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataTheoule171819, x="Adresse", y="Poids", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse à Théoule-sur-Mer sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataTheoule171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse à Théoule-sur-Mer et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataTheoule171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse à Théoule-sur-Mer et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Poids (en kg)")
fig = px.box(dataTheoule171819, x="Adresse", y="Poids", color="Adresse", width=2000, height=1000, title="Dispersion du poids collecté de verre par adresse à Théoule-sur-Mer sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
fig = px.histogram(dataTheoule20, x="Lieu de Collecte", y="Poids", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse à Théoule-sur-Mer en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
data17MoisPoids = dataMoisAnneePoids[dataMoisAnneePoids["Année"] == 2017]
fig = px.line(data17MoisPoids, x="Mois", y="Poids", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Poids collecté de verre par mois et par ville en 2017")
fig.update_layout(yaxis_title="Poids (en kg)")
data18MoisPoids = dataMoisAnneePoids[dataMoisAnneePoids["Année"] == 2018]
fig = px.line(data18MoisPoids, x="Mois", y="Poids", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Poids collecté de verre par mois et par ville en 2018")
fig.update_layout(yaxis_title="Poids (en kg)")
data19MoisPoids = dataMoisAnneePoids[dataMoisAnneePoids["Année"] == 2019]
fig = px.line(data19MoisPoids, x="Mois", y="Poids", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Poids collecté de verre par mois et par ville en 2019")
fig.update_layout(yaxis_title="Poids (en kg)")
data20MoisPoids = dataMoisAnneePoids[dataMoisAnneePoids["Année"] == 2020]
fig = px.line(data20MoisPoids, x="Mois", y="Poids", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Poids collecté de verre par mois et par ville en 2020")
fig.update_layout(yaxis_title="Poids (en kg)")
dataMoisAnneePoids["Période"] = dataMoisAnneePoids["Mois"] + " " + dataMoisAnneePoids["Année"].astype(str)
dataMoisAnneePoids
fig = px.line(dataMoisAnneePoids, x="Période", y="Poids", color='Ville', color_discrete_map=dictVillesCouleurs, width=2000, title="Poids collecté de verre par mois et par ville sur la période 2017-2020")
fig.update_layout(yaxis_title="Poids (en kg)")
fig.update_xaxes(tickangle=270)
dataCannesMoisPoids = dataMoisAnneePoids[dataMoisAnnee["Ville"] == "Cannes"]
fig = px.line(dataCannesMoisPoids, x="Mois", y="Poids", color='Année', width=900, title="Poids collecté de verre à Cannes par mois et par année")
fig.update_layout(yaxis_title="Poids (en kg)", yaxis_rangemode="tozero")
dataCannetMoisPoids = dataMoisAnneePoids[dataMoisAnnee["Ville"] == "Le Cannet"]
fig = px.line(dataCannetMoisPoids, x="Mois", y="Poids", color='Année', width=900, title="Poids collecté de verre au Cannet par mois et par année")
fig.update_layout(yaxis_title="Poids (en kg)", yaxis_rangemode="tozero")
dataMandelieuMoisPoids = dataMoisAnneePoids[dataMoisAnnee["Ville"] == "Mandelieu-la-Napoule"]
fig = px.line(dataMandelieuMoisPoids, x="Mois", y="Poids", color='Année', width=900, title="Poids collecté de verre à Mandelieu-la-Napoule par mois et par année")
fig.update_layout(yaxis_title="Poids (en kg)", yaxis_rangemode="tozero")
dataMouginsMoisPoids = dataMoisAnneePoids[dataMoisAnnee["Ville"] == "Mougins"]
fig = px.line(dataMouginsMoisPoids, x="Mois", y="Poids", color='Année', width=900, title="Poids collecté de verre à Mougins par mois et par année")
fig.update_layout(yaxis_title="Poids (en kg)", yaxis_rangemode="tozero")
dataTheouleMoisPoids = dataMoisAnneePoids[dataMoisAnnee["Ville"] == "Théoule-sur-Mer"]
fig = px.line(dataTheouleMoisPoids, x="Mois", y="Poids", color='Année', width=900, title="Poids collecté de verre à Théoule-sur-Mer par mois et par année")
fig.update_layout(yaxis_title="Poids (en kg)", yaxis_rangemode="tozero")